/* --- 全局和根变量 --- */
:root {
    --sidebar-bg: #2c3e50;
    --sidebar-text-color: #ecf0f1;
    --sidebar-width: 240px;
    --main-bg: #ecf0f1;
    --content-bg: #ffffff;
    --primary-color: #3498db;
    --border-color: #dcdcdc;
    --text-color: #34495e;
    --shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

* {
    box-sizing: border-box;
}

body {
    margin: 0;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    display: flex;
    height: 100vh;
    overflow: hidden; /* 防止body滚动 */
    color: var(--text-color);
    background-color: var(--main-bg);
}

/* --- 侧边栏 --- */
.sidebar {
    width: var(--sidebar-width);
    background-color: var(--sidebar-bg);
    color: var(--sidebar-text-color);
    display: flex;
    flex-direction: column;
    flex-shrink: 0; /* 防止侧边栏被压缩 */
    transition: width 0.3s ease;
}

.sidebar__header {
    padding: 20px;
    text-align: center;
    border-bottom: 1px solid #34495e;
}

.sidebar__logo img {
    max-width: 80%;
    height: auto;
}

.sidebar__body {
    flex-grow: 1;
    overflow-y: auto;
}

.menu {
    list-style: none;
    padding: 20px 0;
    margin: 0;
}

.menu__link {
    display: flex;
    align-items: center;
    padding: 12px 20px;
    color: var(--sidebar-text-color);
    text-decoration: none;
    transition: background-color 0.2s ease;
    border-left: 4px solid transparent;
}

.menu__link:hover {
    background-color: #34495e;
}

.menu__link.active {
    background-color: #34495e;
    border-left-color: var(--primary-color);
    font-weight: bold;
}

.menu__icon {
    margin-right: 15px;
    font-size: 1.2em;
}

.sidebar__footer {
    padding: 15px;
    text-align: center;
    font-size: 0.8em;
    border-top: 1px solid #34495e;
    flex-shrink: 0;
}

/* --- 主内容区 --- */
.main-content {
    flex-grow: 1;
    display: flex;
    flex-direction: column;
    overflow: hidden; /* 防止main滚动 */
}

.main-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 15px 25px;
    background-color: var(--content-bg);
    border-bottom: 1px solid var(--border-color);
    flex-shrink: 0;
}

/*  --- main header的配置 ---  */
.header-left .device-name {
    font-size: 1.2em;
    font-weight: bold;
    color: var(--text-color);
    flex-shrink: 0; /* 防止被压缩 */
}

/* 消息条样式 - 确保这些样式存在 */
.header-message {
    /* 让它在中间占据空间，但可以被压缩 */
    flex-grow: 1;
    text-align: center;
    
    padding: 8px 15px;
    border-radius: 5px;
    color: #fff;
    font-weight: bold;
    opacity: 0; /* 默认透明 */
    transition: opacity 0.5s ease-in-out;
}
.header-message.success {
    background-color: #2ecc71; /* 绿色 */
}
.header-message.error {
    background-color: #e74c3c; /* 红色 */
}

.header-right {
    display: flex;
    align-items: center;
    gap: 20px; /* 元素之间的间距 */
    flex-shrink: 0; /* 防止被压缩 */
}

/* 通知中心 */
.notification-bell {
    position: relative;
    cursor: pointer;
}

#notification-icon {
    font-size: 1.5em;
    color: #555;
}

.badge {
    position: absolute;
    top: -5px;
    right: -8px;
    background-color: var(--btn-danger);
    color: white;
    border-radius: 50%;
    padding: 2px 6px;
    font-size: 0.7em;
    font-weight: bold;
    display: none; /* 默认隐藏 */
}

.notification-dropdown {
    position: absolute;
    top: 100%;
    right: 0;
    margin-top: 10px;
    width: 300px;
    background-color: var(--content-bg);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    box-shadow: var(--shadow);
    z-index: 1000;
    display: none; /* 默认隐藏 */
    max-height: 400px;
    overflow-y: auto;
}

.notification-dropdown.show {
    display: block;
}

.notification-item {
    padding: 12px 15px;
    border-bottom: 1px solid var(--border-color);
    font-size: 0.9em;
}
.notification-item:last-child {
    border-bottom: none;
}
.notification-item.unread {
    background-color: #f8f9fa;
}

/* 用户信息和登出按钮 */
.user-info {
    font-size: 0.9em;
}

.logout-button {
    display: flex;
    align-items: center;
    color: var(--text-color);
    transition: color 0.2s ease;
}

.logout-button:hover {
    color: var(--primary-color);
}

.main-body {
    flex-grow: 1;
    padding: 25px;
    overflow-y: auto; /* 让内容区自己滚动 */
}

/* --- 页面内容通用样式 --- */
.card {
    background-color: var(--content-bg);
    border-radius: 8px;
    padding: 20px;
    margin-bottom: 20px;
    box-shadow: var(--shadow);
}

.card h2 {
    margin-top: 0;
    border-bottom: 1px solid var(--border-color);
    padding-bottom: 10px;
    color: var(--primary-color);
}

.form-group {
    margin-bottom: 15px;
}

.form-group label {
    display: block;
    margin-bottom: 5px;
    font-weight: bold;
}

.form-group input {
    width: 100%;
    padding: 10px;
    border: 1px solid var(--border-color);
    border-radius: 4px;
}

.btn {
    padding: 10px 20px;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    color: #fff;
    background-color: var(--primary-color);
    font-size: 1em;
}

.btn:hover {
    opacity: 0.9;
}

.btn-danger {
    background-color: #e74c3c;
}

.header-message {
    padding: 8px 15px;
    border-radius: 5px;
    color: #fff;
    opacity: 0;
    transition: opacity 0.5s;
}
.header-message.success {
    background-color: #2ecc71;
}
.header-message.error {
    background-color: #e74c3c;
}


/* --- 响应式设计 --- */
@media (max-width: 768px) {
    body {
        flex-direction: column;
    }

    .sidebar {
        width: 100%;
        height: auto;
        flex-direction: row;
        align-items: center;
    }

    .sidebar__header {
        padding: 10px;
        border-bottom: none;
        border-right: 1px solid #34495e;
    }
    
    .sidebar__logo img {
        max-width: 40px;
    }

    .sidebar__body {
        flex-grow: 1;
        overflow-x: auto; /* 允许菜单横向滚动 */
    }

    .menu {
        display: flex;
        flex-direction: row;
        padding: 0;
    }

    .menu__link {
        border-left: none;
        border-bottom: 4px solid transparent;
        padding: 15px;
    }

    .menu__link.active {
        border-left: none;
        border-bottom-color: var(--primary-color);
    }
    
    .menu__text {
        display: none; /* 在小屏上隐藏文字，只留图标 */
    }

    .sidebar__footer {
        display: none; /* 在小屏上隐藏页脚 */
    }
}

/* 静态IP字段容器的样式 */
.static-fields {
    display: none; /* 默认隐藏 */
    margin-top: 15px;
    padding-left: 15px;
    border-left: 3px solid var(--primary-color);
    transition: all 0.3s ease;
}

/* Radio button 组的样式 */
.radio-group input[type="radio"] {
    margin-right: 5px;
}

.radio-group label {
    margin-right: 20px;
    font-weight: normal; /* 覆盖 form-group label 的 bold */
    cursor: pointer;
}

/* 服务启用/禁用开关的容器 */
.service-toggle {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px !important; /* 强制覆盖 .form-group 的 margin */
}

.service-toggle label {
    font-weight: bold;
    margin-bottom: 0; /* 覆盖 .form-group label 的 margin */
}

/* 滑动开关 (Switch) 样式 */
.switch {
    position: relative;
    display: inline-block;
    width: 60px;
    height: 34px;
}

.switch input {
    opacity: 0;
    width: 0;
    height: 0;
}

.slider {
    position: absolute;
    cursor: pointer;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: #ccc;
    transition: .4s;
}

.slider:before {
    position: absolute;
    content: "";
    height: 26px;
    width: 26px;
    left: 4px;
    bottom: 4px;
    background-color: white;
    transition: .4s;
}

input:checked + .slider {
    background-color: var(--primary-color);
}

input:focus + .slider {
    box-shadow: 0 0 1px var(--primary-color);
}

input:checked + .slider:before {
    transform: translateX(26px);
}

/* 圆形滑块 */
.slider.round {
    border-radius: 34px;
}

.slider.round:before {
    border-radius: 50%;
}

/* 服务配置项容器 */
.service-config-fields {
    display: none; /* 默认隐藏 */
    opacity: 0;
    transition: opacity 0.4s ease-in-out;
}

/* 信息文本样式 */
.info-text {
    font-size: 1em;
    color: #555;
    margin-top: 5px;
}

/* 进度条容器 */
.progress-container {
    margin-top: 20px;
    display: none; /* 默认隐藏 */
}

.progress-bar {
    width: 100%;
    background-color: #f3f3f3;
    border-radius: 13px;
    padding: 3px;
    box-shadow: inset 0 1px 3px rgba(0,0,0,.2);
}

.progress-bar-inner {
    display: block;
    height: 20px;
    width: 0%; /* 初始宽度为0 */
    background-color: var(--primary-color);
    border-radius: 10px;
    transition: width 0.4s ease;
}

#ota-progress-text {
    margin-left: 10px;
    font-weight: bold;
}

/* 文件上传输入框的简单美化 */
input[type="file"] {
    border: 1px solid var(--border-color);
    padding: 10px;
    border-radius: 4px;
    width: 100%;
}

/* 警告/危险按钮的特定样式 */
.btn-warning {
    background-color: #f39c12;
}
.btn-warning:hover {
    background-color: #e67e22;
}

.btn-danger {
    background-color: #e74c3c;
}
.btn-danger:hover {
    background-color: #c0392b;
}

/* 警告文本 */
.warning-text {
    color: #c0392b;
    background-color: #f9e4e2;
    border-left: 4px solid #e74c3c;
    padding: 10px;
}

/* OTA Tab 样式 */
.ota-tabs {
    display: flex;
    border-bottom: 2px solid var(--border-color);
    margin-bottom: 20px;
}

.ota-tab-btn {
    padding: 10px 15px;
    cursor: pointer;
    border: none;
    background-color: transparent;
    font-size: 1em;
    position: relative;
    bottom: -2px; /* 让下边框与父容器边框重合 */
    border-bottom: 2px solid transparent;
}

.ota-tab-btn.active {
    font-weight: bold;
    color: var(--primary-color);
    border-bottom-color: var(--primary-color);
}

.ota-tab-content {
    display: none; /* 默认隐藏所有tab内容 */
}

.ota-tab-content.active {
    display: block; /* 只显示激活的tab内容 */
}

/* 优化 status 页面的信息列表样式 */
.info-list {
    display: grid;
    grid-template-columns: 150px 1fr; /* 左侧标题固定宽度，右侧自适应 */
    gap: 10px 15px; /* 行间距 和 列间距 */
    margin: 0;
    padding: 0;
}

.info-list dt {
    font-weight: bold;
    color: #555;
    text-align: right;
}

.info-list dd {
    margin: 0;
    word-break: break-all; /* 防止长文本溢出 */
}

/* 优化 control 页面的 select 样式 */
.form-control {
    width: 100%;
    padding: 10px;
    border: 1px solid var(--border-color);
    border-radius: 4px;
    background-color: white;
    font-size: 1em;
}

.baudrate-input-group {
    display: flex;
    gap: 10px; /* 元素之间的间距 */
}

.baudrate-input-group select {
    flex-grow: 1; /* 让下拉框占据更多空间 */
}

.baudrate-input-group input {
    flex-grow: 2; /* 让输入框占据更多空间 */
}

/* 红外遥控页面样式 */
.ir-mode-selector {
    display: flex;
    justify-content: center;
    gap: 20px;
    margin-bottom: 25px;
}
.ir-mode-selector input[type="radio"] {
    display: none; /* 隐藏原始的radio按钮 */
}
.ir-mode-selector label {
    padding: 8px 15px;
    border: 1px solid var(--border-color);
    border-radius: 20px;
    cursor: pointer;
    transition: all 0.2s ease;
}
.ir-mode-selector input[type="radio"]:checked + label {
    background-color: var(--primary-color);
    color: white;
    border-color: var(--primary-color);
    font-weight: bold;
}

.ir-panel {
    display: none; /* 默认隐藏所有面板 */
}
.ir-panel.active {
    display: block; /* 只显示激活的面板 */
}

.ir-section-title {
    text-align: center;
    color: #777;
    margin-top: 25px;
    margin-bottom: 15px;
}

.ir-grid {
    display: grid;
    gap: 10px;
}

.ir-main-commands {
    grid-template-columns: repeat(auto-fit, minmax(80px, 1fr));
}

.ir-temp-grid {
    grid-template-columns: repeat(5, 1fr);
}

/* 学习模式下的按钮样式 */
.btn-learn {
    background-color: #f39c12; /* 橙色，表示学习 */
}
.btn-learn:hover {
    background-color: #e67e22;
}
.btn-learn.learning {
    animation: pulse 1.5s infinite; /* 添加一个脉冲动画，表示正在学习 */
}

@keyframes pulse {
    0% {
        box-shadow: 0 0 0 0 rgba(243, 156, 18, 0.7);
    }
    70% {
        box-shadow: 0 0 0 10px rgba(243, 156, 18, 0);
    }
    100% {
        box-shadow: 0 0 0 0 rgba(243, 156, 18, 0);
    }
}

/* --- 精致版分段控件 (Polished Segmented Control) --- */
.segmented-control {
    display: grid;
    grid-template-columns: 1fr 1fr;
    position: relative;
    background-color: #f0f0f0; /* 使用更柔和的背景色 */
    border-radius: 30px;       /* 完全圆角，形成“胶囊”形状 */
    padding: 5px;
    box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); /* 添加内阴影增加质感 */
}

/* 隐藏原始的 radio 按钮 */
.segmented-control input[type="radio"] {
    display: none;
}

/* 标签(我们的“按钮”)的样式 */
.segmented-control__label {
    padding: 10px;
    text-align: center;
    cursor: pointer;
    z-index: 2; /* 确保文字在滑块之上 */
    color: #555; /* 未选中时的文字颜色 */
    font-weight: 500;
    transition: color 0.3s ease, transform 0.2s ease; /* 添加颜色和形变动画 */
}

/* 悬停在未选中选项上时的效果 */
.segmented-control input[type="radio"]:not(:checked) + .segmented-control__label:hover {
    color: #000; /* 文字颜色加深 */
}

/* 点击时的“按下”效果 */
.segmented-control__label:active {
    transform: scale(0.97); /* 轻微缩小 */
}

/* 当 radio 按钮被选中时，其紧邻的 label 的样式 */
.segmented-control input[type="radio"]:checked + .segmented-control__label {
    color: white; /* 选中的文字变为白色 */
    font-weight: bold;
}

/* 滑块的样式 */
.segmented-control__glider {
    position: absolute;
    top: 5px;
    left: 5px;
    width: calc(50% - 5px); /* 宽度为容器的一半，减去内边距 */
    height: calc(100% - 10px); /* 高度撑满，减去内边距 */
    background-color: var(--primary-color);
    border-radius: 30px; /* 同样设为胶囊形状 */
    z-index: 1; /* 在文字之下 */
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); /* 为滑块添加外阴影，使其“浮”起来 */
    transition: transform 0.35s cubic-bezier(0.65, 0, 0.35, 1); /* 更优雅的动画曲线 */
}

/* --- 核心滑动逻辑 (保持不变) --- */
#eth-static:checked ~ .segmented-control__glider,
#wifi-static:checked ~ .segmented-control__glider {
    transform: translateX(calc(100% + 5px)); /* 向右移动自身宽度+间隙 */
}